package cn.iocoder.yudao.module.indicator.domain.dto;

import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import javax.validation.constraints.NotBlank;
import java.nio.channels.Selector;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * 指标查询入参
 */
@Data
public class IndexCalculationDto extends TenantBaseDO {

    public static final String YEAR = "年";
    public static final String MONTH = "月";
    public static final String DAY = "日";

    /**
     * 指标id
     */
    @NotBlank(message = "指标id不能为空")
    private String indexId;
    /**
     * 指标的相关元素id
     */
    private String elementIds;

    /**
     * 传入日期
     */
    private String periodTime;

    /**
     * 开始时间，只做获取即可，不做设置，如果需要修改值，仍在原来几基础上
     */
    private String startTime;
    /**
     * 结束时间
     */
    private String endTime;

    /**
     * 时间类型，年或者月
     */
    private String dateType;

    /**
     * 指标类型，用来判断数据在哪个表
     */
    private String indexType;
    /**
     * 机构id逗号隔开  INSTITUTE_ID  INSTITUTE_NAME
     */
    private String instituteIds;
    /**
     * 医生id逗号隔开
     */
    private String doctorIds;
    /**
     * 诊间id逗号隔开
     */
    private String roomIds;

    /**
     * 诊疗组id
     */
    private String diagnosisIds;

    /**
     * 诊疗组名称
     */
    private String diagnosisName;


    private List<Long> elementIdList;

    private Long bqId;

    private String bqName;
    /**
     * 查询趋势的时间列表
     */
    private List<String> dateList;

    private String dateFormat;


    public List<Long> getElementIdList() {
        if (!StringUtils.isEmpty(elementIds)) {
            //元素ids
            List<Long>  idsList  = Arrays.stream(elementIds.split(","))
                    .map(s -> Long.parseLong(s.trim()))
                    .collect(Collectors.toList());
            return  idsList.stream().distinct().collect(Collectors.toList());
        }

        return new ArrayList<>();
    }

    public String getDateFormat() {
        if (Objects.equals(dateType, YEAR)){
            return "yyyy";
        }else if (Objects.equals(dateType,MONTH)){
            return "yyyy-MM";
        }else {
            return "yyyy-MM-dd";
        }
    }


}
